/* CsJni - .NET / Java Bridge
 * 
 * Copyright 2010 Robert E. Burke Licensed under the Apache License, Version 
 * 2.0 (the "License"); you may not use this file except in compliance with 
 * the License. You may obtain a copy of the License at 
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable 
 * law or agreed to in writing, software distributed under the License is 
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
 * KIND, either express or implied. See the License for the specific language 
 * governing permissions and limitations under the License. 
*/

package csjni;

import java.io.PrintStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

class RedirectOutputStream extends ByteArrayOutputStream
{
	private int mStreamCookie;

	public RedirectOutputStream(int streamCookie)
	{
		mStreamCookie = streamCookie;
	}

	public static void redirectStdOut(int streamCookie)
	{
		System.setOut(new PrintStream(new RedirectOutputStream(streamCookie), true));
	}

	public static void redirectStdErr(int streamCookie)
	{
		System.setErr(new PrintStream(new RedirectOutputStream(streamCookie), true));
	}

	public void flush() throws IOException
	{
		String s = this.toString().trim();
		this.reset();
		if (s.length() > 0)
		{
			redirectStdStream(mStreamCookie, s);
		}
		super.flush();
	}

	private static native void redirectStdStream(int streamCookie, String message);
}